package config

import (
	"cid-media-api/global"
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"log"
)

func initDatabase(databaseConfig *DbInfo) (*gorm.DB, error) {
	if !databaseConfig.Enable {
		return nil, nil // 不启用数据库
	}

	dsn := databaseConfig.Dsn
	//关闭日志输出
	// logger.Default.LogMode(logger.Silent)
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger: logger.Default.LogMode(logger.Error),
	})
	if err != nil {
		return nil, fmt.Errorf("初始化数据库失败，错误: %w", err)
	}

	if _, err := db.DB(); err != nil {
		return nil, fmt.Errorf("配置数据库失败，错误: %w", err)
	}

	return db, nil
}

func InitDB() {
	var err error

	if global.CidDb, err = initDatabase(&AppConfig.Database.Cid); err != nil {
		log.Fatalf("Cid数据库初始化失败: %v", err)
	}

	if global.SucaiDb, err = initDatabase(&AppConfig.Database.Sucai); err != nil {
		log.Fatalf("Sucai数据库初始化失败: %v", err)
	}

	if global.SucaiTkDb, err = initDatabase(&AppConfig.Database.SucaiTk); err != nil {
		log.Fatalf("SucaiTk数据库初始化失败: %v", err)
	}
}
